package dou.net.socket;

import java.io.IOException;
import java.nio.channels.SocketChannel;

/**
 * 提供了非阻塞服务端套接字对象的基本方法
 * @author wizardc
 */
public interface IServerSocket
{
    /**
     * 启动该套接字服务对象
     * @param host 需要侦听的服务端地址
     * @param port 需要侦听的服务端端口
     * @throws IOException 启动服务套接字时出现 IO 异常时抛出
     */
    void startService(String host, int port) throws IOException;

    /**
     * 添加数据发送套接字对象
     * @param socket 需要发送数据的套接字对象
     */
    void send(IClientSocket socket);

    /**
     * 移除一个套接字对象
     * @param socket 需要被移除的套接字对象
     */
    void remove(SocketChannel socket);
}
